package com.papercutting.platform.dto.request;

import lombok.Data;

import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * 用户创建请求
 */
@Data
public class UserCreateRequest implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 用户昵称
     */
    @NotBlank(message = "用户昵称不能为空")
    @Size(max = 50, message = "用户昵称长度不能超过50个字符")
    private String nickname;
    
    /**
     * 手机号
     */
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;
    
    /**
     * 邮箱
     */
    @Email(message = "邮箱格式不正确")
    private String email;
    
    /**
     * 密码（可选，如果不提供将生成默认密码）
     */
    @Size(min = 6, max = 20, message = "密码长度必须在6-20个字符之间")
    private String password;
    
    /**
     * 用户头像
     */
    @Size(max = 500, message = "头像URL长度不能超过500个字符")
    private String avatarUrl;
    
    /**
     * 性别 0-未知 1-男 2-女
     */
    @Min(value = 0, message = "性别值不正确")
    @Max(value = 2, message = "性别值不正确")
    private Integer gender = 0;
    
    /**
     * 国家
     */
    @Size(max = 50, message = "国家名称长度不能超过50个字符")
    private String country;
    
    /**
     * 省份
     */
    @Size(max = 50, message = "省份名称长度不能超过50个字符")
    private String province;
    
    /**
     * 城市
     */
    @Size(max = 50, message = "城市名称长度不能超过50个字符")
    private String city;
    
    /**
     * 语言
     */
    @Size(max = 20, message = "语言长度不能超过20个字符")
    private String language;
    
    /**
     * 用户类型 0-普通用户 1-管理员
     */
    @NotNull(message = "用户类型不能为空")
    @Min(value = 0, message = "用户类型值不正确")
    @Max(value = 1, message = "用户类型值不正确")
    private Integer userType = 0;
    
    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500个字符")
    private String remark;
}